#!/bin/bash
# 定义备份配置文件路径
LOCAL_BACKUP_CONFIG="./hi3798mv100_defconfig.backup"
# 定义内核版本
KERNEL_VERSION="linux-4.4.y"
# 定义补丁目录
PATCH_DIR="linux-4.4.y.patch"
# 获取当前日期（格式：YYYYMMDD）
CURRENT_DATE=$(date +%Y%m%d)

# 检查本地是否存在备份的配置文件
if [[ -f "$LOCAL_BACKUP_CONFIG" ]]; then
    echo "检测到本地备份的配置文件，正在覆盖原配置文件..."
    cp "$LOCAL_BACKUP_CONFIG" "source/kernel/$KERNEL_VERSION/arch/arm/configs/hi3798mv100_defconfig"
    cp "$LOCAL_BACKUP_CONFIG" "source/kernel/$PATCH_DIR/arch/arm/configs/hi3798mv100_defconfig"
else
    echo "未检测到本地备份的配置文件，跳过覆盖步骤。"
fi



# 备份 hi3798mv100_defconfig
echo "备份 hi3798mv100_defconfig..."
cp "source/kernel/$KERNEL_VERSION/arch/arm/configs/hi3798mv100_defconfig" "source/kernel/$KERNEL_VERSION/arch/arm/configs/hi3798mv100_defconfig.bak"
cp "source/kernel/$PATCH_DIR/arch/arm/configs/hi3798mv100_defconfig" "source/kernel/$PATCH_DIR/arch/arm/configs/hi3798mv100_defconfig.bak"

# 在当前目录备份一份，文件名加上年月日
echo "在当前目录备份一份配置文件，文件名包含日期..."
cp "source/kernel/$KERNEL_VERSION/arch/arm/configs/hi3798mv100_defconfig" "./hi3798mv100_defconfig_$CURRENT_DATE.bak"

# 进入内核源代码目录
cd "source/kernel/$KERNEL_VERSION" || { echo "无法进入内核源代码目录"; exit 1; }

# 从 defconfig 生成标准 Linux 内核配置 .config 文件
echo "生成标准 Linux 内核配置 .config 文件..."
make ARCH=arm hi3798mv100_defconfig

# 修改内核配置并保存
echo "启动 menuconfig 以修改内核配置..."
make ARCH=arm menuconfig

# 重新生成 defconfig 文件
echo "重新生成 defconfig 文件..."
make ARCH=arm savedefconfig

# 复制 defconfig 文件到正确的位置
echo "复制 defconfig 文件到 arch/arm/configs/hi3798mv100_defconfig..."
cp defconfig arch/arm/configs/hi3798mv100_defconfig

# 将新的 defconfig 文件备份到 .patch 目录

echo "将新的 defconfig 文件备份到 $PATCH_DIR..."
#mkdir -p "$PATCH_DIR"
cp defconfig "../$PATCH_DIR/arch/arm/configs/hi3798mv100_defconfig"

echo "所有步骤已完成！"

read -p "是否需要重新编译内核？(y/n): " RECOMPILE

if [[ "$RECOMPILE" == "y" || "$RECOMPILE" == "Y" ]]; then
    echo "开始编译内核..."
    
    # 切换到上级目录
    cd ../../../

    # 记录开始时间
    START_TIME=$(date +%s)

    # 执行编译
    make linux -j$(nproc)

    # 记录结束时间
    END_TIME=$(date +%s)

    # 计算耗费时间
    ELAPSED_TIME=$((END_TIME - START_TIME))
    echo "内核编译完成！耗费时间：$((ELAPSED_TIME / 60)) 分钟 $((ELAPSED_TIME % 60)) 秒。"
else
    echo "跳过内核编译。"
fi